#include "gpio.h"

static const char *TAG = "GPIO";

void gpio_output(uint8_t pin)
{ 
    gpio_config_t io_conf = {
        .intr_type = GPIO_INTR_DISABLE,       // 禁用中断
        .mode = GPIO_MODE_OUTPUT,             // 设置为输出模式
        .pin_bit_mask = (1 << pin),  // 要配置的GPIO引脚位掩码(1ULL<<GPIO_OUTPUT_IO_0)
        .pull_down_en = GPIO_PULLDOWN_DISABLE,// 禁用下拉电阻
        .pull_up_en = GPIO_PULLUP_DISABLE     // 禁用上拉电阻
    };

    gpio_config(&io_conf); // 应用配置

    //配置完成设置默认低电平
    gpio_set_level(pin, 0);

}

void gpio_input(uint8_t pin)
{ 
    gpio_config_t io_conf = {
        .intr_type = GPIO_INTR_DISABLE,       // 禁用中断
        .mode = GPIO_MODE_INPUT,             // 设置为输出模式
        .pin_bit_mask = (1 << pin),  // 要配置的GPIO引脚位掩码(1ULL<<GPIO_OUTPUT_IO_0)
        //.pull_down_en = GPIO_PULLDOWN_DISABLE,// 禁用下拉电阻
        //.pull_up_en = GPIO_PULLUP_DISABLE     // 禁用上拉电阻
    };

    gpio_config(&io_conf); // 应用配置
}

void gpio_init(void) {
    gpio_output(1);//公共端
    gpio_set_level(1, 1);
    gpio_output(2);//停止
    gpio_output(4);//下降
    gpio_output(5);//开门到最高位
    gpio_input(6);//公共端
    gpio_input(7);//开到位输出
    gpio_input(8);//关到位输出
}

void control(int ctl) {
    if (ctl == 1) {
        printf("open\n");
        gpio_set_level(5, 1);
    } else {
        printf("close\n");
        gpio_set_level(4, 1);
    }
}

bool judge(void) {
    if (gpio_get_level(7) == 1|| gpio_get_level(8) == 1) {
        return true;
    }else{
        return false;
    }
}